<?php

class Reportes_model extends CI_Model {

    function __construct() {
        parent::__construct();
    }

    public function postulados($rolId, $idTabla, $opc = null) {
        /* Según el rol de quien consulta extra los diferentes filtros para la consulta de los postulados */
        $nomBarras = array();   //nombre de las barras
        $valores = array();   //Valores cuantificados de cada barra
        $porcentajes = array();   //porcentajes de cada barra
        $retornar = array();    //Retorna todos los arreglos de esta funcion
        //extrae el número total de postulados en el sistema
        $sql = "select count(*) as total from postulaciones";
        $postulaciones100 = $this->db->query($sql)->result();
        $postulaciones100 = $postulaciones100[0]->total;
        switch ($rolId) {
            case '4': //se trata de una persona
                //obtengo la ciudad de la persona
                $sql = "select ciu.ciudadId,ciu.ciudad,count(*) as totCiudad from postulaciones pos
                inner join personas per
                inner join ciudades ciu on ciu.ciudadId = per.ciudadId
                inner join ofertaslaborales ofer on ofer.ofertaLaboralId = pos.ofertaLaboralId and ofer.ciudadId = ciu.ciudadId
                where per.personasId = '$idTabla' and ciu.ciudadEstado = 'A' group by ciu.ciudadId";
                $totCiudad = $this->db->query($sql)->result();
                array_push($nomBarras, $totCiudad[0]->ciudad); //Nombre de la ciudad
                $totCiudad = $totCiudad[0]->totCiudad;
                array_push($valores, $totCiudad);
                if ($postulaciones100 > 0)
                    array_push($porcentajes, round(($totCiudad / $postulaciones100) * 100, 2));
                else
                    array_push($porcentajes, 0);
                $columnas = 3;
                break;
            case '3': //se trata de una institución
                //Obtiene el numero de postulaciones realizadas por la institución
                $sql = "select ciu.ciudadId,inst.institucionRazon,count(*) as totCiudad from postulaciones pos
                    inner join instituciones inst on inst.institucionId = pos.institucionId
                    inner join ciudades ciu on ciu.ciudadId = inst.ciudadId
                    where inst.institucionId = '$idTabla' and ciu.ciudadEstado = 'A' group by ciu.ciudadId";
                $totCiudad = $this->db->query($sql);
                if ($totCiudad->num_rows() > 0) {
                    $totCiudad = $totCiudad->result();
                    array_push($nomBarras, substr($totCiudad[0]->institucionRazon, 0, 20)); //Nombre de la ciudad
                    $totCiudad = $totCiudad[0]->totCiudad;
                    array_push($valores, $totCiudad);
                } else {
                    array_push($nomBarras, "INSTITUCIÓN"); //Nombre de la ciudad
                    $totCiudad = 0;
                    array_push($valores, $totCiudad);
                }
                if ($postulaciones100 > 0)
                    array_push($porcentajes, round(($totCiudad / $postulaciones100) * 100, 2));
                else
                    array_push($porcentajes, 0);
                //Obtiene el numero de postulados para la ciudad de la institución
                $sql = "select ciu.ciudadId,ciu.ciudad,count(*) as totCiudad from postulaciones pos
                inner join instituciones inst
                inner join ciudades ciu on ciu.ciudadId = inst.ciudadId
                inner join ofertaslaborales ofer on ofer.ofertaLaboralId = pos.ofertaLaboralId and ofer.ciudadId = ciu.ciudadId
                where inst.institucionId = '$idTabla' and ciu.ciudadEstado = 'A' group by ciu.ciudadId";
                $tmp = $this->db->query($sql);
                $totCiudad = $tmp->result();
                if ($tmp->num_rows() > 0) {
                    array_push($nomBarras, $totCiudad[0]->ciudad); //Nombre de la ciudad
                    $totCiudad = $totCiudad[0]->totCiudad;
                    array_push($valores, $totCiudad);
                    if ($postulaciones100 > 0)
                        array_push($porcentajes, round(($totCiudad / $postulaciones100) * 100, 2));
                    else
                        array_push($porcentajes, 0);
                }
                $columnas = 3;
                break;
            case '2': //se trata de una empresa
                //obtengo la ciudad de la empresa
                $sql = "select ciu.ciudadId,ciu.ciudad,count(*) as totCiudad from postulaciones pos
                inner join empresas emp
                inner join ciudades ciu on ciu.ciudadId = emp.ciudadId
                inner join ofertaslaborales ofer on ofer.ofertaLaboralId = pos.ofertaLaboralId and ofer.ciudadId = ciu.ciudadId
                where emp.empresaId = '$idTabla' and ciu.ciudadEstado = 'A' group by ciu.ciudadId";
                $totCiudad = $this->db->query($sql)->result();
                array_push($nomBarras, $totCiudad[0]->ciudad); //Nombre de la ciudad
                $totCiudad = $totCiudad[0]->totCiudad;
                array_push($valores, $totCiudad);
                if ($postulaciones100 > 0)
                    array_push($porcentajes, round(($totCiudad / $postulaciones100) * 100, 2));
                else
                    array_push($porcentajes, 0);
                $columnas = 3;
                break;
            case '1': //se trata del administrador
                $where = "";
                $columnas = 0;
                $where .= ($this->input->post("fecIni") && trim($this->input->post("fecIni")) != "") ? " and pos.postulacionFecha >= '{$this->input->post("fecIni")}' " : " and pos.postulacionFecha > '1986-10-01' ";
                $where .= ($this->input->post("fecFin") && trim($this->input->post("fecFin")) != "") ? " and pos.postulacionFecha <= '{$this->input->post("fecFin")}' " : " and pos.postulacionFecha <= '2986-10-01' ";
                $where .= ($this->input->post("departamento") && trim($this->input->post("departamento")) != "") ? " and ciu.dptCod = '{$this->input->post("departamento")}' " : "";
                $where .= ($this->input->post("ciudad") && trim($this->input->post("ciudad")) != "") ? " and ciu.ciudadId = '{$this->input->post("ciudad")}' " : "";
                if ($this->input->post("instituciones") && trim($this->input->post("instituciones")) != "") {
                    $sql = "select insti.institucionRazon,count(*) as totCiudad from postulaciones pos                
                        inner join ofertaslaborales ofer on ofer.ofertaLaboralId = pos.ofertaLaboralId
                        inner join instituciones insti on insti.institucionId = pos.institucionId
                        inner join ciudades ciu on ciu.ciudadId = ofer.ciudadId
                        where ciu.ciudadEstado = 'A' and insti.institucionId = '{$this->input->post("instituciones")}' and ciu.dptCod $where group by ciu.ciudadId";
                    $result = $this->db->query($sql);
                    if ($result->num_rows > 0) {
                        $totCiudad = $result->result();
                        array_push($nomBarras, substr($totCiudad[0]->institucionRazon, 0, 20)); //Nombre de la ciudad
                        $totCiudad = $totCiudad[0]->totCiudad;
                        array_push($valores, $totCiudad);
                        array_push($porcentajes, round(($totCiudad / $postulaciones100) * 100, 2));
                    } else {
                        array_push($nomBarras, "INSTITUCIÓN"); //Nombre de la ciudad
                        $totCiudad = 0;
                        array_push($valores, $totCiudad);
                        array_push($porcentajes, round(($totCiudad / $postulaciones100) * 100, 2));
                    }
                    $columnas++;
                }

                $sql = "select ciu.ciudadId,ciu.ciudad,count(*) as totCiudad from postulaciones pos                
                        inner join ofertaslaborales ofer on ofer.ofertaLaboralId = pos.ofertaLaboralId
                        inner join ciudades ciu on ciu.ciudadId = ofer.ciudadId
                        where ciu.ciudadEstado = 'A' $where group by ciu.ciudadId";
                $result = $this->db->query($sql);
                foreach ($result->result() as $res) {
                    array_push($nomBarras, $res->ciudad); //Nombre de la ciudad
                    $totCiudad = $res->totCiudad;
                    array_push($valores, $totCiudad);
                    array_push($porcentajes, round(($totCiudad / $postulaciones100) * 100, 2));
                    $columnas++;
                }
                $columnas++;
                break;
        }
        $retornar["columnas"] = $columnas;
        array_push($nomBarras, "NACIONAL");
        array_push($valores, $postulaciones100);
        array_push($porcentajes, "100");
        $retornar["valores"] = $valores;
        $retornar["nombres"] = $nomBarras;
        $retornar["procentajes"] = $porcentajes;
        return $retornar;
    }

//fin public function postulados($rolId, $idTabla) {

    public function contratados($rolId, $idTabla, $fecIni, $fecFin) {
        /* Según el rol de quien consulta extra los diferentes filtros para la consulta de los contratados */
        $nomBarras = array();   //nombre de las barras
        $valores = array();   //Valores cuantificados de cada barra
        $porcentajes = array();   //porcentajes de cada barra
        $retornar = array();    //Retorna todos los arreglos de esta funcion
        $columnas = 3;
        switch ($rolId) {
            case '4': //se trata de una persona
                //obtengo la ciudad de la persona y el número de postulados
                $sql = "select ciu.ciudadId,ciu.ciudad,count(*) as totCiudad from postulaciones pos
                inner join personas per
                inner join ciudades ciu on ciu.ciudadId = per.ciudadId
                inner join ofertaslaborales ofer on ofer.ofertaLaboralId = pos.ofertaLaboralId and ofer.ciudadId = ciu.ciudadId
                where per.personasId = '$idTabla' and ciu.ciudadEstado = 'A' and pos.postulacionFecha between '$fecIni' and '$fecFin'";
                $totCiudad = $this->db->query($sql)->result();
                array_push($nomBarras, $totCiudad[0]->ciudad); //Nombre de la ciudad
                $postulaciones = $totCiudad[0]->totCiudad;
                //obtengo el número de postulados
                $sql = "select count(*) as totCiudad from postulaciones pos
                inner join contratos contra on contra.postulacionesId = pos.postulacionesId
                inner join personas per
                inner join ciudades ciu on ciu.ciudadId = per.ciudadId
                inner join ofertaslaborales ofer on ofer.ofertaLaboralId = pos.ofertaLaboralId and ofer.ciudadId = ciu.ciudadId
                where per.personasId = '$idTabla' and ciu.ciudadEstado = 'A' and pos.postulacionFecha between '$fecIni' and '$fecFin'";
                $totCiudad = $this->db->query($sql)->result();
                $contratos = $totCiudad[0]->totCiudad;
                array_push($valores, $contratos);
                if ($postulaciones > 0)
                    array_push($porcentajes, round(($contratos / $postulaciones) * 100, 2));
                else
                    array_push($porcentajes, 0);
                break;
            case '3': //se trata de una institución
                //Obtiene el numero de postulaciones realizadas por la institución
                $sql = "select ciu.ciudadId,inst.institucionRazon,count(*) as totCiudad from postulaciones pos
                    inner join instituciones inst on inst.institucionId = pos.institucionId
                    inner join ciudades ciu on ciu.ciudadId = inst.ciudadId
                    where inst.institucionId = '$idTabla' and ciu.ciudadEstado = 'A' and pos.postulacionFecha between '$fecIni' and '$fecFin'";
                $postulaciones = $this->db->query($sql);
                $postulaciones = $postulaciones->result();
                if ($postulaciones[0]->totCiudad > 0) {
                    array_push($nomBarras, substr($postulaciones[0]->institucionRazon, 0, 20)); //Nombre de la ciudad
                    $postulaciones = $postulaciones[0]->totCiudad;
                    $sql = "select ciu.ciudadId,inst.institucionRazon,count(*) as totCiudad from postulaciones pos
                        inner join contratos contra on contra.postulacionesId = pos.postulacionesId
                        inner join instituciones inst on inst.institucionId = pos.institucionId
                        inner join ciudades ciu on ciu.ciudadId = inst.ciudadId
                        where inst.institucionId = '$idTabla' and ciu.ciudadEstado = 'A' and pos.postulacionFecha between '$fecIni' and '$fecFin'";
                    $contratos = $this->db->query($sql)->result();
                    $contratos = $contratos[0]->totCiudad;
                    array_push($valores, $contratos);
                    array_push($porcentajes, round(($contratos / $postulaciones) * 100, 2));
                } else {
                    array_push($nomBarras, "INSTITUCIÓN"); //Nombre de la ciudad
                    $totCiudad = 0;
                    array_push($valores, $totCiudad);
                    array_push($porcentajes, 0);
                }
                //Obtiene el numero de postulados para la ciudad de la institución
                $sql = "select ciu.ciudadId,ciu.ciudad,count(*) as totCiudad from postulaciones pos
                inner join instituciones inst
                inner join ciudades ciu on ciu.ciudadId = inst.ciudadId
                inner join ofertaslaborales ofer on ofer.ofertaLaboralId = pos.ofertaLaboralId and ofer.ciudadId = ciu.ciudadId
                where inst.institucionId = '$idTabla' and ciu.ciudadEstado = 'A' and pos.postulacionFecha between '$fecIni' and '$fecFin'";
                $postulaciones = $this->db->query($sql)->result();
                array_push($nomBarras, $postulaciones[0]->ciudad); //Nombre de la ciudad
                $postulaciones = $postulaciones[0]->totCiudad;
                $sql = "select ciu.ciudadId,ciu.ciudad,count(*) as totCiudad from postulaciones pos
                inner join contratos contra on contra.postulacionesId = pos.postulacionesId
                inner join instituciones inst
                inner join ciudades ciu on ciu.ciudadId = inst.ciudadId
                inner join ofertaslaborales ofer on ofer.ofertaLaboralId = pos.ofertaLaboralId and ofer.ciudadId = ciu.ciudadId
                where inst.institucionId = '$idTabla' and ciu.ciudadEstado = 'A' and pos.postulacionFecha between '$fecIni' and '$fecFin'";
                $contratos = $this->db->query($sql)->result();
                $contratos = $contratos[0]->totCiudad;
                array_push($valores, $contratos);
                if ($postulaciones > 0)
                    array_push($porcentajes, round(($contratos / $postulaciones) * 100, 2));
                else
                    array_push($porcentajes, 0);
                break;
            case '2': //se trata de una empresa
                //obtengo la ciudad de la empresa y el número de postulados
                $sql = "select ciu.ciudadId,ciu.ciudad,count(*) as totCiudad from postulaciones pos
                inner join empresas emp
                inner join ciudades ciu on ciu.ciudadId = emp.ciudadId
                inner join ofertaslaborales ofer on ofer.ofertaLaboralId = pos.ofertaLaboralId and ofer.ciudadId = ciu.ciudadId
                where emp.empresaId = '$idTabla' and ciu.ciudadEstado = 'A' and pos.postulacionFecha between '$fecIni' and '$fecFin'";
                $totCiudad = $this->db->query($sql)->result();
                array_push($nomBarras, $totCiudad[0]->ciudad); //Nombre de la ciudad
                $postulaciones = $totCiudad[0]->totCiudad;
                //obtengo el número de postulados
                $sql = "select count(*) as totCiudad from postulaciones pos
                inner join contratos contra on contra.postulacionesId = pos.postulacionesId
                inner join empresas emp
                inner join ciudades ciu on ciu.ciudadId = emp.ciudadId
                inner join ofertaslaborales ofer on ofer.ofertaLaboralId = pos.ofertaLaboralId and ofer.ciudadId = ciu.ciudadId
                where emp.empresaId = '$idTabla' and ciu.ciudadEstado = 'A' and pos.postulacionFecha between '$fecIni' and '$fecFin'";
                $totCiudad = $this->db->query($sql)->result();
                $contratos = $totCiudad[0]->totCiudad;
                array_push($valores, $contratos);
                if ($postulaciones > 0)
                    array_push($porcentajes, round(($contratos / $postulaciones) * 100, 2));
                else
                    array_push($porcentajes, 0);
                break;
            case '1': //se trata del administrador
                $where = "";
                $columnas = 0;
                $where .= ($this->input->post("departamento") && trim($this->input->post("departamento")) != "") ? " and ciu.dptCod = '{$this->input->post("departamento")}' " : "";
                $where .= ($this->input->post("ciudad") && trim($this->input->post("ciudad")) != "") ? " and ciu.ciudadId = '{$this->input->post("ciudad")}' " : "";
                if ($this->input->post("instituciones") && trim($this->input->post("instituciones")) != "") {
                    $sql = "select insti.institucionRazon,count(*) as totCiudad from postulaciones pos                
                        inner join ofertaslaborales ofer on ofer.ofertaLaboralId = pos.ofertaLaboralId
                        left join instituciones insti on insti.institucionId = pos.institucionId 
                        inner join ciudades ciu on ciu.ciudadId = ofer.ciudadId and ciu.ciudadEstado = 'A' $where
                        where insti.institucionId = '{$this->input->post("instituciones")}' and pos.postulacionFecha between '$fecIni' and '$fecFin' group by ciu.ciudadId";
                    $result = $this->db->query($sql);
                    if ($result->num_rows() > 0) {
                        $postulaciones = $result->result();
                        array_push($nomBarras, substr($postulaciones[0]->institucionRazon, 0, 20)); //Nombre de la ciudad
                        $postulaciones = $postulaciones[0]->totCiudad;
                        $sql = "select insti.institucionRazon,count(*) as totCiudad from postulaciones pos                
                        inner join contratos contra on contra.postulacionesId = pos.postulacionesId
                        inner join ofertaslaborales ofer on ofer.ofertaLaboralId = pos.ofertaLaboralId
                        left join instituciones insti on insti.institucionId = pos.institucionId 
                        inner join ciudades ciu on ciu.ciudadId = ofer.ciudadId and ciu.ciudadEstado = 'A' $where
                        where insti.institucionId = '{$this->input->post("instituciones")}' and pos.postulacionFecha between '$fecIni' and '$fecFin' group by ciu.ciudadId";
                        $contratos = $this->db->query($sql)->result();
                        $contratos = $contratos[0]->totCiudad;
                        array_push($valores, $contratos);
                        if ($postulaciones > 0)
                            array_push($porcentajes, round(($contratos / $postulaciones) * 100, 2));
                        else
                            array_push($porcentajes, 0);
                    } else {
                        array_push($nomBarras, "INSTITUCIÓN"); //Nombre de la ciudad
                        $totCiudad = 0;
                        array_push($valores, $totCiudad);
                        array_push($porcentajes, $totCiudad);
                    }
                    $columnas++;
                }
                $sql = "select ciu.ciudadId,ciu.ciudad,count(*) as totCiudad from postulaciones pos                
                        inner join ofertaslaborales ofer on ofer.ofertaLaboralId = pos.ofertaLaboralId
                        inner join ciudades ciu on ciu.ciudadId = ofer.ciudadId and ciu.ciudadEstado = 'A' $where
                        where pos.postulacionFecha between '$fecIni' and '$fecFin' group by ciu.ciudadId";
                $result = $this->db->query($sql);
                foreach ($result->result() as $res) {
                    array_push($nomBarras, $res->ciudad); //Nombre de la ciudad
                    $postulaciones = $res->totCiudad;
                    $sql = "select ciu.ciudadId,ciu.ciudad,count(*) as totCiudad from postulaciones pos                
                        inner join contratos contra on contra.postulacionesId = pos.postulacionesId
                        inner join ofertaslaborales ofer on ofer.ofertaLaboralId = pos.ofertaLaboralId
                        inner join ciudades ciu on ciu.ciudadId = ofer.ciudadId and ciu.ciudadEstado = 'A' and ciu.ciudadId = '{$res->ciudadId}'
                        where pos.postulacionFecha between '$fecIni' and '$fecFin' group by ciu.ciudadId";
                    $contratos = $this->db->query($sql);
                    if ($contratos->num_rows() > 0) {
                        $contratos = $contratos->result();
                        $contratos = $contratos[0]->totCiudad;
                        array_push($valores, $contratos);
                        if ($postulaciones > 0)
                            array_push($porcentajes, round(($contratos / $postulaciones) * 100, 2));
                        else
                            array_push($porcentajes, 0);
                    }else {
                        array_push($valores, 0);
                        array_push($porcentajes, 0);
                    }
                    $columnas++;
                }
                $columnas++;
                break;
        }
        $retornar["columnas"] = $columnas;
        array_push($nomBarras, "NACIONAL");
        //extrae el número total de postulados y contratados en el sistema
        $sql = "select count(*) as total from postulaciones where postulacionFecha between '$fecIni' and '$fecFin'";
        $postulaciones = $this->db->query($sql)->result();
        $postulaciones = $postulaciones[0]->total;
        $sql = "select count(*) as total from postulaciones pos
            inner join contratos contra on contra.postulacionesId = pos.postulacionesId
            where pos.postulacionFecha between '$fecIni' and '$fecFin'";
        $contratos = $this->db->query($sql)->result();
        $contratos = $contratos[0]->total;
        array_push($valores, $contratos);
        if ($postulaciones > 0)
            array_push($porcentajes, 100);
        else
            array_push($porcentajes, 0);
        $retornar["valores"] = $valores;
        $retornar["nombres"] = $nomBarras;
        $retornar["procentajes"] = $porcentajes;
        return $retornar;
    }

//fin public function contratados($rolId, $idTabla) {

    public function permanencia($rolId, $idTabla, $fecha, $rangos) {
        /* Según el rol de quien consulta extra los diferentes filtros para la consulta de permanencia */
        $resultados = array(); //matriz que almacena la informacion de cada uno de los periodos
        $parametros = array();
        $nombres = array();
        $rangosTitulo = array();
        $maximoNum = 0; //Maximo número que se obtiene de las consultas para el control de la grafica
        $numCiclos = 5; //Constante para los numeros de ciclos para cada grafica
        $resultados[1] = array();

        switch ($rolId) {
            case '4': //se trata de una persona
                //obtengo la ciudad de la persona
                $sqlCiudad = "select ciu.ciudad from personas per
                inner join ciudades ciu on ciu.ciudadId = per.ciudadId and ciu.ciudadEstado = 'A'
                where per.personasId = '$idTabla' ";
                //Contratados de la ciudad de la persona
                $sqlPerContra = "select count(contratoId) as total from contratos contra
                    inner join postulaciones pos on pos.postulacionesId = contra.postulacionesId
                    inner join ofertaslaborales ofe on ofe.ofertaLaboralId = pos.ofertaLaboralId
                    inner join ciudades ciu on ciu.ciudadId = ofe.ciudadId and ciu.ciudadEstado = 'A'
                    inner join personas per on per.ciudadId = ciu.ciudadId and per.personasId = '$idTabla'";
                break;
            case '3': //se trata de una institucion
                //obtengo la ciudad de la institucion
                $sqlCiudad = "select ciu.ciudad from instituciones inst
                inner join ciudades ciu on ciu.ciudadId = inst.ciudadId and ciu.ciudadEstado = 'A'
                where inst.institucionId = '$idTabla' ";
                //Contratados de la ciudad de la persona
                $sqlPerContra = "select count(contratoId) as total from contratos contra
                    inner join postulaciones pos on pos.postulacionesId = contra.postulacionesId
                    inner join ofertaslaborales ofe on ofe.ofertaLaboralId = pos.ofertaLaboralId
                    inner join ciudades ciu on ciu.ciudadId = ofe.ciudadId and ciu.ciudadEstado = 'A'
                    inner join instituciones inst on inst.ciudadId = ciu.ciudadId and inst.institucionId = '$idTabla'";
                break;
            case '2': //se trata de una empresa
                //obtengo la ciudad de la institucion
                $sqlCiudad = "select ciu.ciudad from empresas emp
                inner join ciudades ciu on ciu.ciudadId = emp.ciudadId and ciu.ciudadEstado = 'A'
                where emp.empresaId = '$idTabla' ";
                //Contratados de la ciudad de la persona
                $sqlPerContra = "select count(contratoId) as total from contratos contra
                    inner join postulaciones pos on pos.postulacionesId = contra.postulacionesId
                    inner join ofertaslaborales ofe on ofe.ofertaLaboralId = pos.ofertaLaboralId
                    inner join ciudades ciu on ciu.ciudadId = ofe.ciudadId and ciu.ciudadEstado = 'A'
                    inner join empresas emp on emp.ciudadId = ciu.ciudadId and emp.empresaId = '$idTabla'";
                break;
        }
        if ($rolId == "1") {//se trata del administrador
            $sql = "select ciudadId,ciudad from ciudades where ciudadEstado = 'A' order by ciudad";
            $ciudades = $this->db->query($sql);
            $columnas = 0;
            $tieneRangos = false; //bandera para saber si ya se han cargado los rangos de tiempo para la grafica
            //Realiza el calculo de permanencia para cada ciudad
            foreach ($ciudades->result() as $ciudad) {
                $columnas++;
                array_unshift($nombres, $ciudad->ciudad);
                $baseTitulo = 0;
                //Obtiene el porcentaje de contratados para la ciudad
                for ($numCiclos = 1; $numCiclos <= 5; $numCiclos++) {
                    $min = $rangos * ($numCiclos - 1);
                    $actual = $rangos * ($numCiclos);
                    if ($numCiclos == 5) {
                        $actual = 279648; //Se hace esto para que en el ultimo rango de tiempo tome todo lo que hay en el sistema
                        if (!$tieneRangos)
                            array_unshift($rangosTitulo, ("+ " . $baseTitulo . " meses"));
                    } else {
                        $actual = $actual;
                        if (!$tieneRangos) {
                            $tmpBaseTitulo = $baseTitulo + $rangos;
                            array_unshift($rangosTitulo, ($baseTitulo . " - " . $tmpBaseTitulo . " meses"));
                            $baseTitulo = $tmpBaseTitulo;
                        }
                    }
                    if (!isset($resultados[$numCiclos]) || $resultados[$numCiclos] == "")
                        $resultados[$numCiclos] = array();
                    //Consulta el numero de postulados para l periodo de tiempo establecido
                    $sql = "select count(contratoId) as total from contratos contra
                    inner join postulaciones pos on pos.postulacionesId = contra.postulacionesId
                    inner join ofertaslaborales ofe on ofe.ofertaLaboralId = pos.ofertaLaboralId
                    inner join ciudades ciu on ciu.ciudadId = ofe.ciudadId and ciu.ciudadEstado = 'A' and ciu.ciudadId = '{$ciudad->ciudadId}'
                    where  contra.contratoFecha > '$fecha' and (contratoFechaCIerre is null and (datediff(now(),contratoFecha) / 30) >=  $min and (datediff(now(),contratoFecha) / 30) < $actual) or 
                        (contratoFechaCIerre is not null and (datediff(contratoFechaCIerre,contratoFecha) / 30) >= $min and (datediff(contratoFechaCIerre,contratoFecha) / 30) < $actual)";
                    $tmp = $this->db->query($sql)->result();
                    $postulados = $tmp[0]->total;
                    if ($postulados <= 0)
                        array_push($resultados[$numCiclos], 0);
                    else
                        array_push($resultados[$numCiclos], $postulados);
                } //fin for ($numCiclos = 1; $numCiclos <= 5; $numCiclos++) {
                $tieneRangos = true;
            } //fin foreach($ciudades->result() as $ciudad){
        } else {
            $tmp = $this->db->query($sqlCiudad)->result();
            array_unshift($nombres, $tmp[0]->ciudad);
            $baseTitulo = 0;
            //Obtiene el porcentaje de contratados para la ciudad
            for ($numCiclos = 1; $numCiclos <= 5; $numCiclos++) {
                $min = $rangos * ($numCiclos - 1);
                $actual = $rangos * ($numCiclos);
                if ($numCiclos == 5) {
                    $actual = 279648; //Se hace esto para que en el ultimo rango de tiempo tome todo lo que hay en el sistema
                    array_unshift($rangosTitulo, ("+ " . $baseTitulo . " meses"));
                } else {
                    $actual = $actual;
                    $tmpBaseTitulo = $baseTitulo + $rangos;
                    array_unshift($rangosTitulo, ($baseTitulo . " - " . $tmpBaseTitulo . " meses"));
                    $baseTitulo = $tmpBaseTitulo;
                }
                if (!isset($resultados[$numCiclos]) || $resultados[$numCiclos] == "")
                    $resultados[$numCiclos] = array();
                //Consulta el numero de postulados para l periodo de tiempo establecido
                $sql = "$sqlPerContra where  contra.contratoFecha > '$fecha' and (contratoFechaCIerre is null and (datediff(now(),contratoFecha) / 30) >=  $min and (datediff(now(),contratoFecha) / 30) < $actual) or 
                        (contratoFechaCIerre is not null and (datediff(contratoFechaCIerre,contratoFecha) / 30) >= $min and (datediff(contratoFechaCIerre,contratoFecha) / 30) < $actual)";
                $tmp = $this->db->query($sql)->result();
                $postulados = $tmp[0]->total;
                if ($postulados <= 0)
                    array_push($resultados[$numCiclos], 0);
                else
                    array_push($resultados[$numCiclos], $postulados);
            } //fin for ($numCiclos = 1; $numCiclos <= 5; $numCiclos++) {
            $columnas = 1;
        }
        array_unshift($nombres, "NACIONAL");
        //extrae el número total de contratados a nivel nacional por cada uno de los rangos
        for ($numCiclos = 1; $numCiclos <= 5; $numCiclos++) {
            $min = $rangos * ($numCiclos - 1);
            $actual = $rangos * ($numCiclos);
            $actual = ($numCiclos == 5) ? 279648 : $actual; //Se hace esto para que en el ultimo rango de tiempo tome todo lo que hay en el sistema
            //Consulta el numero de postulados para l periodo de tiempo establecido
            $sql = "select count(contratoId) as total from contratos contra
                    inner join postulaciones pos on pos.postulacionesId = contra.postulacionesId
                    inner join ofertaslaborales ofe on ofe.ofertaLaboralId = pos.ofertaLaboralId
                    inner join ciudades ciu on ciu.ciudadId = ofe.ciudadId and ciu.ciudadEstado = 'A'
                    where contra.contratoFecha > '$fecha' and (contratoFechaCIerre is null and (datediff(now(),contratoFecha) / 30) >=  $min and (datediff(now(),contratoFecha) / 30) < $actual) or 
                        (contratoFechaCIerre is not null and (datediff(contratoFechaCIerre,contratoFecha) / 30) >= $min and (datediff(contratoFechaCIerre,contratoFecha) / 30) < $actual)";
            $tmp = $this->db->query($sql)->result();
            $postulados = $tmp[0]->total;
            $maximoNum = ($maximoNum < $postulados) ? $postulados : $maximoNum;
            if ($postulados <= 0)
                array_push($resultados[$numCiclos], 0);
            else
                array_push($resultados[$numCiclos], $postulados);
        }
        $parametros["datos"] = $resultados;
        $parametros["columnas"] = $columnas + 1;
        $parametros["maxNumero"] = $maximoNum;
        $parametros["nombres"] = $nombres;
        $parametros["rangos"] = $rangosTitulo;
        return $parametros;
    }

//fin public function postulados($rolId, $idTabla) {

    public function extraeInstituciones($ciudadId) {
        /* Extrae todas las instituciones para una ciudad determinada */
        $sql = "select institucionRazon,institucionId from instituciones where ciudadId = '$ciudadId' order by institucionRazon";
        return $this->db->query($sql);
    }

//fin public function extraeInstituciones($ciudadId){
}

//fin class Recordar_model extends CI_Model {
?>
